require 'rubygems'
require 'iup'

@increment = 0.01

@pixmap_play = [
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
 2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

@pixmap_restart = [
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

@pixmap_rewind = [
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

@pixmap_forward = [
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

@pixmap_pause = [
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

def createimg_s()
  @img_restart = Iup.Image(22,22, @pixmap_restart)
  @img_play = Iup.Image(22,22, @pixmap_play)
  @img_forward = Iup.Image(22,22, @pixmap_forward)
  @img_rewind = Iup.Image(22,22, @pixmap_rewind)
  @img_pause = Iup.Image(22,22, @pixmap_pause)
   
  @img_restart["1"]= "0 0 0" 
  @img_restart["2"]= "BGCOLOR"
  @img_play["1"]= "0 0 0" 
  @img_play["2"]= "BGCOLOR" 
  @img_forward["1"]= "0 0 0" 
  @img_forward["2"]= "BGCOLOR"
  @img_rewind["1"]= "0 0 0" 
  @img_rewind["2"]= "BGCOLOR" 
  @img_pause["1"]= "0 0 0" 
  @img_pause["2"]= "BGCOLOR"
end

@time_cb = lambda do |ih|
  value = @progressbar1.value.to_f
  value += @increment
  if(value > 1) 
  	value = 0 # start over */
  end
  @progressbar1.value = value

  value = @progressbar2.value.to_f
  value += @increment*50
  if(value > 50) 
  	value = 0 # start over */
  end
  @progressbar2.value = value
  return Iup::DEFAULT
end

@btn_pause_cb = lambda do |ih|
  if(@timer.run == "NO")
    @timer.run = "YES"
    @btn_pause.image = @img_pause
  else
    @timer.run = "NO"
    @btn_pause.image = @img_play
  end
  
  return Iup::DEFAULT
end

@btn_restart_cb = lambda do |ih|
  @progressbar1.value = 0
  @progressbar2.value = 0
  return Iup::DEFAULT
end

@btn_accelerate_cb = lambda do |ih|
  @increment *= 2
  return Iup::DEFAULT
end

@btn_decelerate_cb = lambda do |ih|
  @increment /= 2
  return Iup::DEFAULT
end

@btn_show1_cb = lambda do |ih|
  if(@progressbar1.dashed=="NO")
    @progressbar1.dashed = "YES"
  else
    @progressbar1.dashed = "NO"
  end
  return Iup::DEFAULT
end

@btn_show2_cb = lambda do |ih|
  if(@progressbar1.marquee=="NO")
    @progressbar1.marquee = "YES"
  else
    @progressbar1.marquee = "NO"
  end
  return Iup::DEFAULT
end


  @timer = Iup.Timer()
  @timer.action_cb = @time_cb
  @timer.time = 100
  
  @progressbar1 = Iup.ProgressBar()
  @progressbar2 = Iup.ProgressBar()
 
  @progressbar1.expand =  "YES"
  @progressbar1.dashed =  "YES"
               
  @progressbar2.orientation = "VERTICAL"
  @progressbar2.bgcolor = "255 0 128"
  @progressbar2.fgcolor = "0 128 0"
  @progressbar2.rastersize = "30x100"
  @progressbar2.max = 50
  @progressbar2.value = 25

  @btn_restart = Iup.Button('')
  @btn_pause = Iup.Button('')
  @btn_accelerate = Iup.Button('')
  @btn_decelerate = Iup.Button('')
  @btn_show1 = Iup.Button("Dashed")
  @btn_show2 = Iup.Button("Marquee")

  createimg_s()

  @btn_restart.image = @img_restart
  @btn_restart.tip = "Restart"
  @btn_pause.image = @img_pause
  @btn_pause.tip = "Play/Pause"
  @btn_accelerate.image = @img_forward
  @btn_accelerate.tip = "Accelerate"
  @btn_decelerate.image = @img_rewind
  @btn_decelerate.tip = "Decelerate"
  @btn_show1.tip = "Dashed or Continuous"
  @btn_show2.tip = "Marquee or Defined"

  @progressbar1.dashed =  "NO"

  @hbox = Iup.Hbox([
           Iup.Fill(), 
           @btn_pause,
           @btn_restart,
           @btn_decelerate,
           @btn_accelerate,
           @btn_show1,
           @btn_show2,
           Iup.Fill()])

  vbox = Iup.Hbox([Iup.Vbox([@progressbar1, @hbox]), @progressbar2])
  vbox.margin = "10x10"
  vbox.gap = "5"

  dlg = Iup.Dialog(vbox)
  
  dlg.title = "IupProgressBar Test"

  @btn_pause.action = @btn_pause_cb
  @btn_restart.action = @btn_restart_cb
  @btn_accelerate.action = @btn_accelerate_cb
  @btn_decelerate.action = @btn_decelerate_cb
  @btn_show1.action = @btn_show1_cb
  @btn_show2.action = @btn_show2_cb
  
  dlg.ShowXY(Iup::CENTER, Iup::CENTER)

  @timer.run = "YES"

  Iup.MainLoop
  
  dlg.Destroy

